class Solution {  
public:  
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {  
        int i = m - 1; // nums1 的最后一个有效元素的下标  
        int j = n - 1; // nums2 的最后一个有效元素的下标  
        int k = m + n - 1; // 合并后的数组的最后一个下标  
  
        // 从后向前合并两个数组  
        while (i >= 0 && j >= 0) {  
            if (nums1[i] > nums2[j]) {  
                nums1[k] = nums1[i];  
                i--;  
            } else {  
                nums1[k] = nums2[j];  
                j--;  
            }  
            k--;  
        }  
    }  
};